package com.crane.oss.school.service;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.crane.oss.school.bean.request.QueryTeacherReq;
import com.crane.oss.school.bean.request.teacher.AddTeacherReq;
import com.crane.oss.school.bean.request.teacher.BatchOperateTeacherReq;
import com.crane.oss.school.bean.request.teacher.BatchImportTeacherEntity;
import com.crane.oss.school.bean.request.teacher.UpdateTeacherReq;
import com.crane.oss.school.bean.resp.OpenTeacherResp;
import com.crane.oss.school.bean.resp.TeacherExportResp;
import com.crane.oss.school.bean.resp.TeacherResp;

/**
 * 学校老师信息表
 *
 * @author zhenxing.pi
 * @email ccsu123456@qq.com
 * @date 2022年03月26日 14时24分54秒
 */
public interface TeacherService {

    /**
     * 查詢老师详情<web管理>
     *
     * @param id
     * @return
     */
    TeacherResp queryTeacher(Long id);



    /**
     * 查詢老师详情<web管理>
     */
    TeacherResp queryTeacherByAppUserId(Long appUserId);

    /**
     * 查询老师列表<老师管理>
     *
     * @param request
     * @return
     */
    IPage<TeacherResp> queryList(QueryTeacherReq request);

    /**
     * 查询导出老师信息
     * @param request
     * @return
     */
    IPage<TeacherExportResp> queryExportList(QueryTeacherReq request);

    /**
     * 查询开课老师列表<按校区分组返回>
     *
     * @param request
     * @return
     */
    List<OpenTeacherResp> queryOpenTeacherList(QueryTeacherReq request);

    /**
     * 根据班级查询老师<分页>
     * @param request
     * @return
     */
    IPage<TeacherResp> queryTeacherList(QueryTeacherReq request);

    /**
     * 保持对象
     *
     * @param request
     * @return
     */
    int save(AddTeacherReq request);

    /**
     * 批量保存老师
     *
     * @param entityList    老师列表信息
     * @param partyId       学校ID
     * @param createUserId  系统用户ID
     * @param schoolId      校区ID
     * @return
     */
    void batchSave(List<BatchImportTeacherEntity> entityList, Long partyId, Long createUserId, Long schoolId);

    /**
     * 修改对象
     *
     * @param request
     * @return
     */
    int update(UpdateTeacherReq request);

    /**
     * 删除对象
     *
     * @param id
     * @return
     */
    int delete(Long id);

    /**
     * 批量删除
     */
    void batchDelete(BatchOperateTeacherReq request);

    /**
     * 启用老师
     *
     * @param teacherId
     */
    void enable(Long teacherId);

    /**
     * 批量启用
     * @param request
     */
    void batchEnable(BatchOperateTeacherReq request);

    /**
     * 禁用老师
     *
     * @param teacherId
     */
    void disabled(Long teacherId);

    /**
     * 批量禁用
     * @param request
     */
    void batchDisabled(BatchOperateTeacherReq request);

    /**
     * 重置密码
     *
     * @param teacherId
     */
    void reset(Long teacherId);

    /**
     * 批量重置密码
     *
     * @param request
     */
    void batchReset(BatchOperateTeacherReq request);


    String getPinyin(String name, Long teacherId);
}
